﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using WBGModel;
using System.Data;

namespace WBGDal
{
    public class DalLocacaoItem : ICRUD
    {
        public List<ModelLocacaoItem> Listar()
        {
            return Listar("");
        }

        public List<ModelLocacaoItem> Listar(string filtro)
        {
            String cmd = "SELECT LocacaoItem.*, Filme=Filme.nome FROM LocacaoItem LEFT JOIN FilmeCopia ON FilmeCopia.idCopia=LocacaoItem.idCopia LEFT JOIN Filme ON Filme.idFilme=FilmeCopia.idFilme" + (filtro.CompareTo("") == 0 ? "" : " WHERE " + filtro);
            return ConvertToList(UtilBanco.ExecComRetorno(cmd));
        }

        private List<ModelLocacaoItem> ConvertToList(DataTable resultSet)
        {
            List<ModelLocacaoItem> lst = new List<ModelLocacaoItem>();
            for (int i = 0; i < resultSet.Rows.Count; i++)
            {
                DataRow dr = resultSet.Rows[i];
                ModelLocacaoItem locItem = new ModelLocacaoItem();
                locItem.idLocItem = Convert.ToInt32(dr["idLocItem"]);
                locItem.idLocacao = Convert.ToInt32(dr["idLocacao"]);
                locItem.idCopia = Convert.ToInt32(dr["idCopia"]);
                locItem.devolvido = dr["devolvido"].Equals(DBNull.Value) ? false : Convert.ToBoolean(dr["devolvido"]);
                locItem.valor = Convert.ToDecimal(dr["valor"]);
                locItem.Filme = dr["Filme"].ToString();
                lst.Add(locItem);
            }
            return lst;
        }
        public void Inserir(ModelLocacaoItem obj)
        {
            String cmd = String.Format("INSERT INTO LocacaoItem (idLocacao,idCopia,devolvido,valor) VALUES ({0},{1},'{2}',{3})", obj.idLocacao, obj.idCopia, obj.devolvido, obj.valor.ToString().Replace(",", "."));
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Alterar(ModelLocacaoItem obj)
        {
            String cmd = String.Format("UPDATE LocacaoItem SET idLocacao={0},idCopia={1},devolvido='{2}',valor={3} WHERE idLocItem={4}", obj.idLocacao, obj.idCopia, obj.devolvido, obj.valor.ToString().Replace(",", "."), obj.idLocItem);
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Deletar(int id)
        {
            String cmd = String.Format("DELETE FROM LocacaoItem WHERE idLocItem={0}", id);
            UtilBanco.ExecSemRetorno(cmd);
        }
    }
}
